package ControlLayer;
import ModelLayer.*;
import java.util.ArrayList;
//model layer package has to be imported
/**
 * 
 * 
 * @author (Brian, Jesper, Jesper og  Hoang) 
 * @version ()
 */
public class LagerCtr
{
    //Instance variabler
    private VareContainer vareContainer;
    
    //Constructor
    public LagerCtr()
    {
        vareContainer = VareContainer.getVareContainer();
    }
    
    //Metode til at finde en vare efter id
    public Vare findVare(int _id)
    {
        return vareContainer.searchById(_id);
    }
    
    //Metode til at finde og udskrive vare info
    public String getVareInfo(int _id)
    {
        Vare fundetVare = vareContainer.searchById(_id);
        
        String retStr = "";
        
        if(fundetVare != null)
        { 
            retStr = " ----------------------------------" + "\n";
            retStr += " Vare Info:" + "\n";
            retStr += " Vare ID: " + _id + "\n";
            retStr += " Vare Navn: " + fundetVare.getNavn() + "\n";
            retStr += " Vare Pris: " + fundetVare.getPris() + "\n";
            retStr += " Antal på lager: " + fundetVare.getAntal() + "\n";
            retStr += " Solgt for i alt: " +  fundetVare.getStatistik() + "\n";
            retStr += " ----------------------------------";
        }
        
        return retStr;
    }
    
    //Metode til at oprette en vare
    public void opretVare(int _id, String _navn, double _pris, int _antal, double _statistik)
    {       
        Vare nyVare = new Vare(_id, _navn, _pris, _antal, _statistik);
        
        vareContainer.addVare(nyVare);
    }
    
    //Metode til at slette en vare
    public boolean deleteVare(int _id)
    {
        boolean success = false;
        
        Vare slettetVare = vareContainer.searchById(_id);
       
        if(slettetVare != null)
        {
            vareContainer.deleteVare(slettetVare);
            
            success = true;
        }    
       
        return success;
    }
    
    //Metode til at return et vare navn efter id
    public String vareNavn(int _id)
    {
        Vare vare = vareContainer.searchById(_id);
        String navn = vare.getNavn();
        return navn;
    }
    
    //Metode til at return pris efter id
    public double varePris(int _id)
    {
        Vare vare = vareContainer.searchById(_id);
        double pris = vare.getPris();
        return pris;
    }
    
    //Metode til at udregne og return et nyt antal i varebeholdningen
    public int nyVareBeholding(int _id, int _antal)
    {
        int antal = vareAntal(_id);
        int newAntal = _antal + antal;
        
        return newAntal;
    }
    
    //Metode til at return antal vare efter id
    public int vareAntal(int _id)
    {
        Vare vare = vareContainer.searchById(_id);
        int antal = vare.getAntal();
        return antal;
    }
    
    //Metode til at return statistik efter id
    public double vareStatistik(int _id)
    {
        Vare vare = vareContainer.searchById(_id);
        double statistik = vare.getStatistik();
        return statistik;
    }
    
    //Metode til at opdatere en vare
    public boolean opdaterVare(int _id, String _vareNavn, double _pris, int _antal, double _statistik)
    { 
        boolean success = false;
        Vare vare = vareContainer.searchById(_id);
        
        if(vareContainer != null)
        {
            vareContainer.deleteVare(vare);
            
            vare.setID(_id);
            vare.setNavn(_vareNavn);
            vare.setPris(_pris);
            vare.setAntal(_antal);
            vare.setStatistik(_statistik);
            
            vareContainer.addVare(vare);
            
            success = true;
        }

        return success;
    }
    
    //Metode til at vise alle vare
    public String getAlleVare()
    {
        String retStr = "";
        
        ArrayList<Vare> allVare = vareContainer.getAllVare();
        
        if(allVare != null)
        {
            retStr += "\n";
            retStr += " Alle Vare:" + "\n";
            
            for(Vare vare : allVare)
            {
                retStr += " id: " + vare.getId() + " Vare Navn: " + vare.getNavn() + "\n";
            }
        }
        
        return retStr;
    }
}
